home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / texte / qed / src / olga.c < prev    next >
C/C++ Source or Header  |  1998-05-24  |  3KB  |  137 lines

  1. #include "global.h"
  2. #include "comm.h"
  3. #include "olga.h"
  4.  
  5. /* lokale Variablem **********************************************************/
  6. static int    olga_id;
  7. static bool    olga_active, have_started = FALSE;
  8.  
  9.  
  10. /*****************************************************************************/
  11. static void send_ole_init(void)
  12. {
  13.     memset(msgbuff, 0, (int)sizeof(msgbuff));
  14.     msgbuff[0] = OLE_INIT;
  15.     msgbuff[1] = gl_apid;
  16.     msgbuff[3] = OL_SERVER;
  17.     msgbuff[7] = 'ED';
  18.     send_msg(olga_id);
  19. }
  20.  
  21. static void send_ole_exit(void)
  22. {
  23.     memset(msgbuff, 0, (int)sizeof(msgbuff));
  24.     msgbuff[0] = OLE_EXIT;
  25.     msgbuff[1] = gl_apid;
  26.     send_msg(olga_id);
  27. }
  28.  
  29. static void send_olga_update(char *filename)
  30. {
  31.     memset(msgbuff, 0, (int)sizeof(msgbuff));
  32.     msgbuff[0] = OLGA_UPDATE;
  33.     msgbuff[1] = gl_apid;
  34.     strcpy(global_str1, filename);
  35.     *(char **)(msgbuff + 3) = global_str1;
  36.     send_msg(olga_id);
  37. }
  38.  
  39. static void send_olga_rename(char *oldname, char *newname)
  40. {
  41.     memset(msgbuff, 0, (int)sizeof(msgbuff));
  42.     msgbuff[0] = OLGA_RENAME;
  43.     msgbuff[1] = gl_apid;
  44.     strcpy(global_str1, oldname);
  45.     *(char **)(msgbuff + 3) = global_str1;
  46.     strcpy(global_str2, newname);
  47.     *(char **)(msgbuff + 5) = global_str2;
  48.     send_msg(olga_id);
  49. }
  50.  
  51. void handle_olga(int *msg)
  52. {
  53.     switch (msg[0])
  54.     {
  55.         case OLGA_INIT :
  56.             /*
  57.              * Wenn qed OLGA gestartet hat, ist unter N.AES OLGA die aktuelle 
  58.              * Applikation! 
  59.             */
  60.             if (have_started && gl_naes)
  61.             {
  62.                 long    v;
  63.                 
  64.                 appl_control(gl_apid, 12, &v);
  65.                 have_started = FALSE;
  66.             }
  67.  
  68.             olga_active = TRUE;
  69.             break;
  70.  
  71.         case OLE_NEW :
  72.             olga_id = msg[1];
  73.             send_ole_init();
  74.             break;
  75.  
  76.         case OLGA_ACK :
  77.             break;
  78.  
  79.         case OLE_EXIT :
  80.             olga_active = FALSE;
  81.             break;
  82.     }
  83. }
  84.  
  85. void do_olga(int flag, char *name1, char *name2)
  86. {
  87.     if (olga_active)
  88.     {
  89.         switch (flag)
  90.         {
  91.             case OLGA_UPDATE :
  92.                 if (name1 != NULL)
  93.                     send_olga_update(name1);
  94.                 break;
  95.  
  96.             case OLGA_RENAME :
  97.                 if (name1 != NULL && name2 != NULL)
  98.                     send_olga_rename(name1, name2);
  99.                 break;
  100.         }
  101.     }
  102. }
  103.  
  104. void init_olga(void)
  105. {
  106.     char    *p;
  107.  
  108.     olga_id = appl_find("OLGA    ");
  109.     if (olga_id > 0)
  110.         send_ole_init();
  111.     else
  112.     {
  113.         p = getenv("OLGAMANAGER");
  114.         if (p != NULL)
  115.         {
  116.             PATH    olga_path, olga_name, old;
  117.  
  118.             strcpy(olga_name, p);
  119.             split_filename(olga_name, olga_path, NULL);
  120.             get_path(old, 0);
  121.             set_path(olga_path);
  122.             if (gl_gem >= 0x400)
  123.                 shel_write(1, 1, 1, olga_name, "");
  124.             else if (gl_magx)
  125.                 shel_write(1, 1, 100, olga_name, "");
  126.             have_started = TRUE;
  127.             set_path(old);
  128.         }
  129.     }
  130. }
  131.  
  132. void term_olga(void)
  133. {
  134.     if (olga_active)
  135.         send_ole_exit();
  136. }
  137.